<div id="content">
	<h1>命令执行应用（查询生成器）</h1>
	<p class="mar_t_10">
	　　DP的查询生成器提供了一个面向对象的方式书写SQL语句。它允许开发者使用类的方法和属性来指定一个SQL语句的各个部分。然后组装成一个有效的SQL语句，可以进一步执行中所描述的数据访问对象。<br />
	　　下面建立一个SELECT SQL语句的查询生成器一个典型的用法：
	</p>
	<pre class="syntax php">&lt;?php
	$user = D::app()->db()->createSql()
	    ->select('id, username, profile')
	    ->from('tbl_user u')
	    ->join('tbl_profile p', 'u.id=p.user_id')
	    ->where('id=:id', array(':id'=>$id))
	    ->find();
	);
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　当你需要组建一个SQL语句的程序，使用查询生成器有以下优点：
		<ul class="list">
			<li>　　　●　容易构建复杂的SQL语句。</li>
			<li>　　　●　引述参数值，并使用参数绑定时，这有助于减少SQL注入攻击的风险。</li>
			<li>　　　●　提供了一定程度的数据库抽象，简化了迁移到不同的数据库平台。</li>
			<li>　　　●　自动引用表名和列名，以防止冲突与SQL的保留字和特殊字符。</li>
		</ul>
	</p>
	<br />
	<h1>获取查询生成器</h1>
	<p class="mar_t_10">
	　　我们通过 <strong>dpDbCommand</strong> 来获取查询生成器，下面的例子展示获取查询生成器：
	</p>
	<pre class="syntax php">&lt;?php
	$db = D::app()->db()->createSql();
?&gt;</pre>
	<br />
	<div class="notice">
		提示：在获取查询生成器的时候，通过组件 <strong>db('slave')</strong> 可以获取到想要的从库的查询生成器，例如：
		<strong>$slave_db = D::app()->db('slave_1')->createSql()</strong>
	</div>
	<p class="mar_t_10">
	　　也就是说，我们使用的 <strong>D::app()->db()</strong> 来获得数据库连接。下面的例子都以 <strong>$db</strong> 为演示
	</p>
	<br />
	<h1>构建数据检索查询</h1>
	<p class="mar_t_10">
	　　查询生成器提供了一系列的方法来建立一个 SELECT 语句的各个部分。因为这些所有方法返回的是 <strong>dpDbCommand</strong> 实例，所以我们可以使用链式操作，下面是所有可以链式操作的方法示例。<br />
	　　本节开始说明下面方式使用示例：<br />
		<ul class="list">
			<li>　　　●　<strong>select()</strong> 用来指定 SELECT 语句部分</li>
			<li>　　　●　<strong>selectDistinct()</strong> 用来的 SELECT DISTINCT 语句部分</li>
			<li>　　　●　<strong>from()</strong> 用来指定 FROM 语句部分</li>
			<li>　　　●　<strong>join()</strong> 用来指定 INNER JOIN 语句部分</li>
			<li>　　　●　<strong>fullJoin()</strong>  用来指定 FULL JOIN 语句部分</li>
			<li>　　　●　<strong>leftJoin()</strong> 用来指定 LEFT JOIN 语句部分</li>
			<li>　　　●　<strong>rightJoin()</strong> 用来指定 RIGHT JOIN 语句部分</li>
			<li>　　　●　<strong>where()</strong> 用来指定 WHERE 语句部分</li>
			<li>　　　●　<strong>group()</strong> 用来指定 GROUP 语句部分</li>
			<li>　　　●　<strong>having()</strong> 用来指定 HAVING 语句部分</li>
			<li>　　　●　<strong>order()</strong> 用来指定 ORDER 语句部分</li>
			<li>　　　●　<strong>limit()</strong> 用来指定 LIMIT 语句部分</li>
		</ul>
	</p>
	<p class="mar_t_10">　　在下面，我们将说明如何使用这些查询生成器方法。为简单起见，我们假设底层的数据库是MySQL。需要注意的是，如果你使用的是其他DBMS，表/列/值引用的例子中可能会有所不同。</p>
	<br />
	<h1>select()</h1>
	<pre class="syntax php">&lt;?php
	function select($columns='*')
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　select()方法指定的 SELECT 查询的一部分。参数中指定的字段被选中，它可以是一个字符串，表示以逗号分隔的字段，或者是一个数组。key / value（字段名 / 字段别名），key 也可以是带上表名的字段名比如：tbl_table.name。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	//SELECT *
	$db->select()
	//SELECT id, name
	select('id, name')
	//SELECT tbl_user_id AS uid, username AS name
	select(array('tbl.user_id'=>'uid', 'username'=>'name'))
?&gt;</pre>
	<br />
	<h1>selectDistinct()</h1>
	<pre class="syntax php">&lt;?php
	function selectDistinct($columns='*')
?&gt;</pre>
<br />
	<p class="mar_t_10">
	　　selectDistinct() 方法的参数跟 select() 的参数一样。是一个筛选去掉重复结果的查询。
	</p>
	<pre class="syntax php">
	SELECT DISTINCT `id`, `username`</pre>
	<br />
	<h1>from()</h1>
	<pre class="syntax php">&lt;?php
	function from($table = '')
?&gt;</pre>
	<p class="mar_t_10">
	　　from() 方法指定的 from 语句部分。参数中指定的表名，它可以是一个字符串，表示以逗号分隔的表名，或者是一个数组。key / value（表名 / 表别名）。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// FROM `tbl_user`
	from('tbl_user')
	// FROM `tbl_user` AS `u`, `tbl_profile` AS `p`
	from(array('tbl_user'=>'u', 'tbl_profile'=>'p'))
?&gt;</pre>
	<br />
	<div class="notice">
		提示：DP有处理表前缀的方法，在配置文件中设置好表前缀后，在任何查询地方把表名加上 {} 大括号即可，例如上面的例子：<strong>from('{user}')</strong> 会自动为表加上表前缀，翻译为 <strong>tbl_user</strong>
	</div>
	<br />
	<h1>where()</h1>
	<pre class="syntax php">&lt;?php
	function where($conditions, $params = array())
?&gt;</pre>
	<p class="mar_t_10">
	　　where() 方法指定的 where 语句部分。参数1是指定查询条件，它可以是一个字符串或者是一个数组。参数2是条件参数绑定，格式为数组。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// WHERE id=1 or id=2
	where('id=1 or id=2')
	// WHERE id=:id1 or id=:id2
	where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))
	// WHERE id=1 OR id=2
	where(array('or', 'id=1', 'id=2'))
	// WHERE id=1 AND (type=2 OR type=3)
	where(array('and', 'id=1', array('or', 'type=2', 'type=3')))
	// WHERE `id` IN (1, 2)
	where(array('in', 'id', array(1, 2))
	// WHERE `id` NOT IN (1, 2)
	where(array('not in', 'id', array(1,2)))
	// WHERE `name` LIKE '%Mo%'
	where(array('like', 'name', '%Mo%'))
	// WHERE `name` LIKE '%Mo' AND `name` LIKE '%Yi'
	where(array('like', 'name', array('%Mo', '%Yi')))
	// WHERE `name` LIKE '%Mo' OR `name` LIKE '%Yi'
	where(array('or like', 'name', array('%Mo', '%Yi')))
	// WHERE `name` NOT LIKE '%Mo%'
	where(array('not like', 'name', '%Mo%'))
	// WHERE `name` NOT LIKE '%Mo%' OR `name` NOT LIKE '%Yi%'
	where(array('or not like', 'name', array('%Mo%', '%Yi%')))
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　请注意，当操作时，我们必须显式地指定的通配符（％和_）的模式。如果是从用户输入的模式，我们也应该使用下面的代码来转义特殊字符，以防止它们被视为通配符：
	</p>
	<pre class="syntax php">&lt;?php
	$keyword=$_GET['q'];
	//转义 % 和 _
	$keyword=strtr($keyword, array('%'=>'\%', '_'=>'\_'));
	$command->where(array('like', 'title', '%'.$keyword.'%'));
?&gt;</pre>
	<br />
	<h1>join() 以及 join 变种</h1>
	<pre class="syntax php">&lt;?php
	function join($table, $conditions, $params=array())
	function fullJoin($table, $conditions, $params=array())
	function leftJoin($table, $conditions, $params=array())
	function rightJoin($table, $conditions, $params=array())
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　<strong>join()</strong>方法指定的是 <strong>inner join</strong>语句部分。<strong>fullJoin()</strong>方法指定的是<strong>full join</strong>语句部分。<strong>leftJoin()</strong>方法指定的是<strong>left join</strong>语句部分。<strong>rightJoin()</strong>方法指定的是<strong>right join</strong>语句部分。他们的 <strong>参数2</strong> 和 <strong>参数3</strong> 的格式跟 <strong>where()</strong> 的参数一样，第一个参数指定的是连接的表名。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// JOIN `tbl_profile` ON user_id=id
	join('{profile}', 'user_id=id')
	// LEFT JOIN `tbl_profile` AS `p` ON p.user_id=id AND type=1
	leftJoin(array('{profile}'=>'p'), 'p.user_id=id AND type=:type', array(':type'=>1))
?&gt;</pre>
	<br />
	<h1>group()</h1>
	<pre class="syntax php">&lt;?php
	function group($columns)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　group()方法指定的是 group 语句部分，接收的是一个字符串，指定字段名，多个用逗号分开。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// GROUP BY `name`, `id`
	group('name, id')
	// GROUP BY `tbl_profile`.`name`, `id`
	function having($conditions, $params=array())
?&gt;</pre>
	<br />
	<h1>having()</h1>
	<pre class="syntax php">&lt;?php
	function group($columns)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　having() 方法指定的是 having 部分语句，注意，使用这个方法，前面必须要用到group方法，因为having是对分组进行条件过滤的。他的参数跟where()方法的参数一样。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// HAVING id=1 or id=2
	having('id=1 or id=2')
	// HAVING id=1 OR id=2
	having(array('or', 'id=1', 'id=2'))
?&gt;</pre>
	<br />
	<h1>order()</h1>
	<p class="mar_t_10">
	　　order() 方法指定的是 order by 部分语句，对结果进行排序，接收的是一个字符串，表示以逗号分隔的字段和结果的方向（ASC或DESC）<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// ORDER BY `name`, `id` DESC
	order('name, id desc')
?&gt;</pre>
	<br />
	<h1>limit()</h1>
	<pre class="syntax php">&lt;?php
	function limit($limit, $offset=null)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　limit() 方法指定的是查询结果的限制和偏移量。<br />
	　　下面是一些例子：
	</p>
	<pre class="syntax php">&lt;?php
	// LIMIT 10
	limit(10)
	// LIMIT 10, 20
	limit(10, 20)
?&gt;</pre>
	<br />
	<h1>查询生成器例子</h1>
	<p class="mar_t_10">
	　　本节我们将完整的使用查询生成器来建立一个查询，假设表前缀为：<strong>tbl_</strong> ，下面是例子：
	</p>
	<pre class="syntax php">&lt;?php
	//我们在上面通过 $db 变量获取的数据库链接，这里就不需要再次 D::app()->db()
	$users = $db->select()
		    ->from('{user}')	//会自动转换为tbl_user
		    ->finds();			//获取所有行
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　上面执行的查询是获取用户表的所有信息，除了 finds() 方法，我们还有一个 find() 方法是获取一行结果的。<br />
	　　finds() 和 finds 都是链式操作的结尾方法。也许你可能不会太喜欢使用链式操作，没关系，finds() 和 find() 都支持直接SQL查询，示例：
	</p>
	<br />
	<pre class="syntax php">&lt;?php
	$users = $db->finds('SELECT * FROM {user}'); 
	$user  = $db->find('SELECT * FROM {user} ORDER BY user_id DESC');
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　通过书写SQL语句直接通过finds() 或者 find() 查询，跟上面的链式操作获取的结果相同，注意的是，find() 只返回一行结果，finds() 是多行。<br />
	　　如果需要统计查询结果的行数，我们可以使用 count() 方法，一般只有在执行过 finds() 或者 find() 方法后，才用这个方法。<br />　　否则需要给 count() 方法一个参数：SQL语句，示例：
	</p>
	<pre class="syntax php">&lt;?php
	//假设 tbl_user 表有十行数据

	$users = $db->finds('SELECT * FROM {user}'); 
	$rows  = $db->count();
	echo $rows;		// 10

	// 10
	echo $db->count('SELECT * FROM {user}');
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　我们还有一个方法：execute() 这个方法是执行非查询(SELECT)形式的SQL命令，比如update、insert等等，这个方法不能通过链式操作执行，只允许单独使用，示例：
	</p>
	<pre class="syntax php">&lt;?php
	// DELETE FROM `tbl_user` WHERE user_id=2
	if($db->execute('DELETE FROM {user} WHERE user_id=:id', array(':id'=>2)))
		echo '删除成功';
	else
		echo '删除失败';
?&gt;</pre>
	<br />
	<h1>非查询形式方法</h1>
	<p class="mar_t_10">
	　　如果非查询仅仅是更新、删除、修改这些，DP提供有专门的方法来处理这些操作：
		<ul class="list">
			<li>　　　●　<strong>insert()</strong> 对数据表进行 增加 数据操作</li>
			<li>　　　●　<strong>delete()</strong> 对数据表进行 删除 数据操作</li>
			<li>　　　●　<strong>update()</strong> 对数据表进行 更新 数据操作</li>
		</ul>
	</p>
	<br />
	<h1>insert()</h1>
	<pre class="syntax php">&lt;?php
	function insert($table, $columns, $params = array())
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　insert() 方法建立并执行一个 INSERT SQL 语句，参数1，为增加数据的表名；参数2，是一个数组，key / value ( 字段名 / 值 )；参数3，是对参数进行绑定<br />　　下面是例子：
	</p>
	<pre class="syntax php">&lt;?php
	// INSERT INTO `tbl_user` (`name`, `email`) VALUES ('Tester', 'tester@example.com')
	$db->insert('{user}', array(
	    'name'=>'Tester',
	    'email'=>'tester@example.com',
	));
	//绑定参数
	// INSERT INTO `tbl_user` (`name`, `email`) VALUES (':name', ':email')
	$db->insert('{user}', 
		array(
		    'name'=>':name',
		    'email'=>':email'),
	    array(
	    	':name'=>'Tester',
	    	':email'=>'tester@example.com'
	    ));
?&gt;</pre>
	<br />
	<h1>update()</h1>
	<pre class="syntax php">&lt;?php
	function update($table, $columns, $conditions='', $params=array())
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　update() 方法建立并执行一个 UPDATE SQL 语句，参数1，为更新数据的表名；参数2，是一个数组，key / value ( 字段名 / 值 )；参数3 和 参数4 跟 where() 方法的参数一样。<br />　　下面是例子：
	</p>
	<pre class="syntax php">&lt;?php
	// UPDATE `tbl_user` SET `name`='Tester' WHERE id=:id
	$db->update('{user}', array(
	    'name'=>'Tester',
	), 'id=:id', array(':id'=>1));
?&gt;</pre>
	<br />
	<h1>delete()</h1>
	<pre class="syntax php">&lt;?php
	function delete($table, $conditions='', $params=array())
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　delete() 方法建立并执行一个 DELETE SQL 语句，参数1，为删除数据的表名；参数2 和 参数3 跟 where() 方法的参数一样。<br />　　下面是例子：
	</p>
	<pre class="syntax php">&lt;?php
	// DELETE FROM `tbl_user` WHERE id=:id
	$db->delete('{user}', 'id=:id', array(':id'=>1));
?&gt;</pre>
	<br />
	<h1>数据架构设计</h1>
	<p class="mar_t_10">
	　　除了正常的数据检索和操作查询，查询生成器还提供了一组用于构建、修改数据表SQL查询，支持下面的查询：
		<ul class="list">
			<li>　　　●　<strong>createTable()</strong> 创建一个数据表</li>
			<li>　　　●　<strong>dropTable()</strong> 删除一个数据表</li>
			<li>　　　●　<strong>renameTable()</strong> 重命名一个数据表</li>
			<li>　　　●　<strong>truncateTable()</strong> 清空一个数据表</li>
			<li>　　　●　<strong>addColumn()</strong> 对表增加一个字段</li>
			<li>　　　●　<strong>dropColumn()</strong> 删除表中的一个字段</li>
			<li>　　　●　<strong>renameColumn()</strong> 对表中的一个字段重命名</li>
			<li>　　　●　<strong>alterColumn()</strong> 修改表中的一个字段</li>
		</ul>
	</p>
	<div class="code">
		帮助：查询生成器试图提供一个统一的接口来构建这些查询。这简化了从一个数据库系统迁移到另一个数据库系统。
	</div>
	<br />
	<h1>抽象数据类型</h1>
	<p class="mar_t_10">
	　　查询生成器引入了一组抽象数据类型，可用于定义表中的字段。不针对特定的数据库系统，因为每个数据库系统有很大的不同，DP试图抽象数据类型是一个独立于所有数据库系统的。当抽象数据类型用于定义表中的字段，查询生成器将它们转换成相应的物理数据类型。<br />
	　　下面是查询生成器所提供的抽象数据类型：
		<ul class="list">
			<li>　　　●　<strong>pk</strong> 建立一个主键并且是自增ID的整型</li>
			<li>　　　●　<strong>string</strong> 建立一个字符串型的字段，长度为255</li>
			<li>　　　●　<strong>text</strong> 建立一个text类型的字段</li>
			<li>　　　●　<strong>integer</strong> 建立一个整型字段，长度为11</li>
			<li>　　　●　<strong>int_not</strong> 建立一个不为空的整型字段，长度为11，默认为0</li>
			<li>　　　●　<strong>float</strong> 建立一个浮点型的字段</li>
			<li>　　　●　<strong>time</strong> 建立一个时间型的字段</li>
			<li>　　　●　<strong>date</strong> 建立一个日期型的字段</li>
			<li>　　　●　<strong>datetime</strong> 建立一个日期时间型的字段</li>
			<li>　　　●　<strong>binary</strong> 建立一个blog型的字段</li>
			<li>　　　●　<strong>boolean</strong> 建立一个长度为1的tinyint的字段</li>
			<li>　　　●　<strong>bool_not</strong> 建立一个长度为1的tinyint的字段，并且不为空，默认为0</li>
		</ul>
	</p>
	<br />
	<div class="notice">
		提示：事实上，查询生成器支持自定义类型，也就是说，支持直接书写数据库系统的类型。
	</div>
	<br />
	<h1>createTable()</h1>
	<pre class="syntax php">&lt;?php
	function createTable($table, $columns, $options=null)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　createTable() 方法是创建一个表。表参数指定要创建的表的名称。字段参数指定新的表中的字段。格式为一个数组( 字段名=>字段类型)。options参数指定任何额外的SQL片段应该被附加到生成的SQL。查询生成器将引用的表名以及正确的列名。<br />
	　　下面是一个例子展示了如何创建一个表：
	</p>
	<pre class="syntax php">&lt;?php
	// CREATE TABLE `tbl_user` (
	//     `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	//     `username` varchar(255) NOT NULL,
	//     `createtime` datetime
	// ) charset=utf8

	//设置字段和字段类型
	$columns = array(
		'id' => 'pk',
		'username' => 'varchar(255) NOT NULL',
		'createtime' => 'datetime'
	);

	//指定表字符集
	$options = 'charset=utf8';

	//指定查询，建立数据表
	$db->createTable('{user}', $columns, $options);
?&gt;</pre>
	<br />
	<h1>renameTable()</h1>
	<pre class="syntax php">&lt;?php
	function renameTable($table, $newName)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　renameTable()方法是将一个表重新命名。<br />
	　　下面是一个例子展示了如何重新命名一个表：
	</p>
	<pre class="syntax php">&lt;?php
	// RENAME TABLE `tbl_users` TO `tbl_user`
	$db->renameTable('{users}', '{user}');
?&gt;</pre>
	<br />
	<h1>dropTable()</h1>
	<pre class="syntax php">&lt;?php
	function dropTable($table)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　dropTable()方法是将一个表删除。<br />
	　　下面是一个例子展示了如何删除一个表：
	</p>
	<pre class="syntax php">&lt;?php
	// DROP TABLE `tbl_user`
	$db->dropTable('{user}');
?&gt;</pre>
	<br />
	<h1>truncateTable()</h1>
	<pre class="syntax php">&lt;?php
	function truncateTable($table)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　truncateTable()方法是将一个表清空，并且自增ID初始化。<br />
	　　下面是一个例子展示了如何清空一个表：
	</p>
	<pre class="syntax php">&lt;?php
	// TRUNCATE TABLE `tbl_user`
	$db->truncateTable('{user}');
?&gt;</pre>
	<br />
	<h1>addColumn()</h1>
	<pre class="syntax php">&lt;?php
	function addColumn($table, $column, $type)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　addColumn()方法是对表增加一个字段，需要指定表的名称，新增字段名和字段类型。<br />
	　　下面是一个例子展示了如何新增一个字段：
	</p>
	<pre class="syntax php">&lt;?php
	// ALTER TABLE `tbl_user` ADD `email` varchar(255)
	$db->addColumn('{user}', 'email', 'string');
?&gt;</pre>
	<br />
	<h1>dropColumn()</h1>
	<pre class="syntax php">&lt;?php
	function dropColumn($table, $column)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　dropColumn()方法是删除表中的一个字段，需要指定出表名和字段名。<br />
	　　下面是一个例子展示了如何删除一个字段：
	</p>
	<pre class="syntax php">&lt;?php
	// ALTER TABLE `tbl_user` DROP COLUMN `location`
	$db->dropColumn('{user}', 'email');
?&gt;</pre>
	<br />
	<h1>renameColumn()</h1>
	<pre class="syntax php">&lt;?php
	function renameColumn($table, $name, $newName)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　renameColumn()方法是对表中的一个字段重命名，需要指定表名、旧字段名、新字段名<br />
	　　下面是一个例子展示了如何删除一个字段：
	</p>
	<pre class="syntax php">&lt;?php
	// ALTER TABLE `tbl_users` CHANGE `username` `name` varchar(255) NOT NULL
	$db->renameColumn('{user}', 'username', 'name');
?&gt;</pre>
	<br />
	<h1>alterColumn()</h1>
	<pre class="syntax php">&lt;?php
	function alterColumn($table, $column, $type)
?&gt;</pre>
	<br />
	<p class="mar_t_10">
	　　alterColumn()方法是对表中的一个字段进行修改，需要指定表名、字段名、新字段类型<br />
	　　下面是一个例子展示了如何删除一个字段：
	</p>
	<pre class="syntax php">&lt;?php
	// ALTER TABLE `tbl_user` CHANGE `username` `username` varchar(50) NOT NULL
	$db->alterColumn('{user}', 'username', 'varchar(50) NOT NULL');
?&gt;</pre>
</div>
<script type="text/javascript">
$(function() {
	jQuery.syntax();
});
</script>